約 4,324,062 件
https://w.atwiki.jp/realm_grinder/pages/38.html
(Steamストアページより) 王国を拡張したり、同盟を組むことができる、今までに無い最も深い放置系RPGです。 お金と影響力を使って、始めは1つの農場から、オフラインでも富を稼ぐ巨大な王国へと成長することができます! 『Realm Grinder』は、プレイヤーの王国を構築方法が驚くほど多くの選択肢があります。 主な特徴: それぞれ独自のプレイスタイルを持つ、12の派閥との同盟を結べます。 貴方は財宝を手に入れることに報いるElfと同盟を結ぶか、それとも、最も強力な建造物に莫大なボーナスを与えるDemonと手を組みますか?
https://w.atwiki.jp/terragen/pages/82.html
Node Type Render ノード説明と目的 グローバル・イルミネーションを参照。 設定 Prepassタブ GI cache detail GIキャッシュ・ディティール GIキャッシュは、画像全体の多くのポイントの照明を記録します。これらは、レンダリング時にプレパスで見るドットの事です。各ドットは1つのサンプルに対応します。各サンプルには、さまざまな方向からの光を格納します。GIキャッシュ・ディティールは、プレパスを通した画像空間におけるサンプルの間隔に影響します。そして、最終パスでは、シーンの任意の部分である照明は、近接するサンプルの加重平均、言い換えるとフィルタリングされた補間となります。ディティールが低いほど近似値は粗くなります。ディティールが低すぎる場合、大抵はGIにおいてぼやけていたり明瞭さの欠いた表現となります。GIキャッシュ・ディティールが低いと、シーンの一部がプレパスで完全に見落とされる場合もあり、これらの領域にGI(暗くなる)が発生する可能性が結果として生じます。これは、画像内で小さくまばらな植物やオブジェクトで問題になる可能性がより高いです(GIキャッシュ・ディティールが高い場合も生じる可能性はありますが、極希です)。GIキャッシュ・ディティールはメモリ(およびGIキャッシュファイルに保存する場合はディスク)のGIキャッシュのサイズに影響を及ぼし、プリパスのレンダリングにかかる時間に影響します。最終パスのレンダリング時間にも影響する可能性がありますが、"GI sample quality"に比べるとはるかに低いです。レンダリング開始時にウインドウ内に広がる白い点々の集まりをプレパスと呼び、これらの点の一つ一つにその部分の明るさの情報が入っています。 GI sample quality GIサンプル・クオリティ GIキャッシュの各サンプルポイントでは、多くの光線がポイントの球形の外側に投射されて、そのポイントの照明を捕獲します。GIサンプル・クオリティは、各サンプルポイントから外側に投射される光線の数に影響します。実際の光線数は設定値(通常6x以上)よりはるかに大きいですが、一般的にGIサンプル・クオリティの設定が高いほど光線が多くなります。GIを受け入れる方向に関して多くのコントラストがある場合、"斑(まだら)"と評される事を避けるためや、時には重要な光源を見逃さないために、より高サンプルのディティールが必要となる事があります。デフォルト値の2は、一部の景観レンダリングには十分ですが、高品質の最終レンダリングではこれを増やしたい場合があります。また、建造物などのレンダリングでは少なくとも6を推奨します。GIサンプル・クオリティは、各サンプルに格納されるデータの量にも影響します。そのため、GIキャッシュ・ディティールとGIサンプル・クオリティの両方はメモリ内のGIのサイズとプレパスをレンダリングするのにかかる時間に影響します。主にプレパス時間に影響する時に、GIサンプル・クオリティは、GIキャッシュ・ディティールよりもはるかに多く、最終パスのレンダリング時間に影響します。 GI blur radius GIブラー半径 各GIサンプルのポイントは最終画像内の球形領域に影響を及ぼし、複数のサンプルの球形が重なり合っている所でそれらは一緒に平均化されます。これらの球形の半径は、レンダラーによって決定される様々なものに依存しますが、十分なサンプルが画像のすべての部分に重なる事を確保するための最小半径を強制的にコントロールします。GIブラー半径は画像空間におけるこの最小半径に影響します。これは画像空間にありますが、ピクセル単位ではありません。これは、プレパスで見るGIプレパスサンプルの間隔に比例しますが、 "Supersample prepass"で作成された余分のサンプルは含まれません。デフォルト値は8です。値を小さくするとGIにおいて素晴らしいディテールの印象を与えるかもしれませんが、画像中の斑やアニメーションのちらつきが増える可能性があります。値を大きくすると、GIが滑らかになりますが、外見上のディテールが減少する可能性があります。ほとんどのレンダリングでは8が適切な妥協点だと考えています。Terragen 3以降 半径がプレパスのサンプルの間隔に比例するため、"GI cache detail"を増やすと、画像空間のぼかし領域が減少します。このように動作するので、"GI cache detail"は補間のクオリティに影響を与えずに全体的なディティールを変化させます。Terragen 2 半径はプレパスのサンプルの間隔に比例しているため、レンダリング設定の"Detail"、"GI relative detail"を増や事で、画像空間のぼかし領域を減少します。このように動作するので、"Detail"と"GI relative detail"は補間のクオリティに影響を与えずに全体的なディティールを変化させます。 Supersample prepass スーパーサンプル・プレパス スーパーサンプル・プレパスは、近くに他のオブジェクトを持たない小さい(または綿密な)オブジェクトを見落とさないように、プレパス時により緻密にまとめたサンプルを取り入れます。プレパスでオブジェクトを見落としたり、近くに他のオブジェクトがない(フォアグラウンドの草の葉や細い樹木の幹など)場合は、これを有効にする必要があるかもしれません。プレパス時にオブジェクトを見落とすと、暗すぎる影(GIが重要な領域)を結果として生じる場合があります。ただし、スーパーサンプル・プレパスは(GIの全体的なクオリティを低下させる)各サンプルのクオリティを低下させるため、デフォルトではオフになっています。 GI Cache File(GIキャッシュファイル) No GI cache file GIキャッシュファイルの不要 画像を普通にレンダリングします。プレパスはGIを生成し、イメージパスは最終画像をレンダリングします。 Write to GI cache file GIキャッシュファイルを書込 GIキャッシュを生成するためにプレパスのみをレンダリングし、GIキャッシュをファイルに保存します。拡張子は".gic"。 Read GI cache file(s) GIキャッシュファイルを読込 最終画像のみをレンダリングします。GIは、(以前に生成された)GIキャッシュファイルから読み込まれます Blend mode ブレンドモード ・One file (exact filename) "Read GI cache file(s)"の右フィールドに指定したファイル名の1つのキャッシュファイルのみを読み込みます。これは正確なファイル名でも、ファイル名に "%04(引用符なし)"が含まれている場合、その文字列は現在のフレームを表す4桁のフレーム番号に置き換えられます。"4"は置き換えする番号の桁数を表し、桁数は変更可能です。ファイルが見つからない場合、レンダラーはエラーを報告します。シーケンスはこのモードでは検出されません。・Nearest file in sequence ベースファイル名("Read GI cache files"の設定ファイル名)から始まり、このモードではベースファイル名と同じシーケンスに属するファイルを検索します。レンダラーは、現在のフレーム番号に最も近いフレーム番号を持つファイルを選択して、1つのキャッシュファイルのみを読み取ります。シーケンス内の任意のファイルをベースファイル名として選択する事が出来ます。・Equal blend within range ベースファイル名("Read GI cache files"の設定ファイル名)から始まり、このモードではベースファイル名と同じシーケンスに属するファイルを検索します。レンダラーは、"Number of files to blend"パラメータと同じ数のファイルを読み込み、フレーム番号が現在のフレーム番号に最も近いファイルを選択しようとします。GIソリューションが3D空間で重なり合っている場合、結果は互いに平均化され、あるファイルのソリューションにギャップがある場合(カメラの視界外)は、他のファイルがデータを埋め込む事が出来ます。シーケンス内の任意のファイルをベースファイル名として選択する事が出来ます。・Interpolate (for animation) これは、現在のフレーム番号に応じてファイルの重量が異なり、アニメーションを通して安定したブレンドが生成される以外は、"Equal blend within range"と同類です。このモードは、キャッシュが'少ない'場合に便利です。'少ないキャッシュ'の定義としては、すべてのフレームにキャッシュファイルがないGIキャッシュファイルのシーケンスを言います。例えば、フレーム10、20、30などにGIキャッシュファイルがあるとします。ブレンドモードを "Interpolate (for animation)"に設定すると、アニメーションの過程で選択されたGIキャッシュの異なるセット間で滑らかなブレンドが行われます。キャッシュファイル間のフレームが多くなるほど、ブレンドはより緩やかになります。重量の上昇/下降は、使用される最初と最後のファイルに適用され、異なるファイルセットの結果間で線形補間を行い、セットが変更されるフレーム間で破裂がわからないようにします(キャッシュファイルによる適用範囲が十分でない3D空間の場所でも破裂が発生する可能性があります)。ブレンドを有効にするには、"Number of files to blend"を2以上に設定する必要があります。このモードは、すべてのフレームにキャッシュファイルがある場合にも機能しますが、状況次第では補間アルゴリズムの性質上、1つ少ないキャッシュファイルをブレンドする点を除いて、"Equal blend within range"モードと同類です。 Number of files to blend ブレンドするファイル数 ブレンドモードが"Equal blend within range"、または"Interpolate (for animation)"の場合、フレームをレンダリングするために一緒に読み込んでブレンドするGIキャッシュファイルの最大数です。ブレンドモードが"Interpolate (for animation)"の場合、フレームによっては少数のファイルしか読み込まれません。これは、線形補間によって範囲内の最初または最後のファイルが重量がゼロである場合があるからです。GIキャッシュのブレンドには作業準備の付帯的コストとしてメモリ使用量が大きく取り上げられ、CPU使用率には劇的な影響はありません。5つ以上のGIキャッシュをブレンドすることは一般的に推奨されておらず、通常は3つで十分です。 Advanced(上級設定) GI prepass padding GIプレパス・パディング GIキャッシュファイルを使用しない場合(GIキャッシュファイルがこの問題を効果的に解決します)、隣接するクロップされたレンダリング、またはパノラマの継ぎ合わせ間の不均一な照明を避けるのに便利なプレパス中に計算された画像の領域をどれだけ拡大するかを指定します。0値はパディング不要を意味します。 Image Passタブ GI surface details GIサーフェスディテール この機能は、GIキャッシュのディテールの不足を補うように設計されています。Terragenのバージョンにより、仕様は異なります。これは、シェーディング時(画像のレンダリング中)やレンダリング中の最終イメージとバケット(タイル)上の後工程の組み合わせのいずれかで発生する別個の工程です。キャッシュはそのディティールを保存しません。あらかじめ生成されたキャッシュファイルからキャッシュを読み込んだり、単にレンダリングするたびにキャッシュを生成したりしても、GIサーフェスディテールは、シェーディングポイントから少し離れたところをレイトレースする事で、キャッシュ内のディティールを追加する事が出来ます。・Global Illumination 陰影とGIの跳ね返りを選択してディティールを追加します。・Ambient Occlusion アンビエント・オクルージョンの陰影にディティールを追加します。Terragen 3と4では、GIサーフェスディテールが影のディティールを強調し、画像空間に接近するサーフェス間で跳ね返る光を追加します。これは2つの工程で構成されていますが、どちらもGIキャッシュには存在しないディティールを追加するように設計されています。画像がレンダリングされている間、バケット(タイル)がレンダリングを仕上げるたびに、サブピクセルサンプルに後工程を適用して、サーフェスのきめ細かいディティールを捉えて際立たせます。次に、画像全体のレンダリングが終了すると、最終的なピクセルに別の後工程が適用され、サーフェスのより多くのディティールを捉えて際立たせます。反射がどのようにレンダリングされたかによって、間接光(GI)やいくつかのソフトリフレクションにのみ影響します。直接照明には影響しません。後処理は、最も一般的なレンダリング(例えばフルHDまで)に数秒、または非常に大きな画像(例えば10Kを超える)の場合には数分掛かる事があります。この間、ユーザーインターフェイスは応答しない可能性がありますが、処理が終了すると戻るため、むやみにクリックなどしないように注意して下さい。Terragen 2では、GIサーフェスディテールによって画像がレンダリングされている間にポイントがどのようにシェーディングされるかが変化していきます。これは、GIキャッシュにまだ存在しない陰影のディテールを、シェーディングポイントからの短い距離をトレースする事によって追加します。反射の仕方によっては間接光(GI)やソフトリフレクションにのみ影響します。直接照明には影響しません。この機能により、Terragen 2のレンダリング時間が大幅に短縮されます。 Occlusion weight オクルージョン効果 環境光が塞がれ光の届かないメッシュの交差部分や隙間などに疑似の陰影を付ける事でGIの陰影をシミュレートします。現実にはアンビエントオクルージョンのような影は出来ませんが、面の重なりなどによって出来る影を色濃く付ける事であたかも現実の影のように陰影を強調する事が出来ます。これは、GIの環境光が計算された後工程で処理されます。GI surface details=Global IlluminationGI surface details=Ambient Occlusion Bounce to the ounce 少量の跳ね返り 画像空間に接近するオブジェクトのサーフェス間で跳ね返る光を追加します。Ambient Occlusionは、この処理は行われません。 Radius(in pixels) 半径(ピクセル単位) 追加処理を行う際、光を取り込む半径を設定します。数値が低いと取り込む光は少なく、数値が高すぎると"Bounce to the ounce"の場合、跳ね返りの半径が大きすぎる事で逆にぼやけた結果になる事もあります。 Falloff フォールオフ ジオメトリのサーフェスで面の法線に対する"Radius"の距離によって、減衰する照明効果の有無を設定します。 GI in Cloudsタブ 以下の設定は、Terragen 4で新しく追加された『Cloud Layer V3』または『Easy Cloud』ノードのすべてのクラウドレイヤーのレンダリングに影響します。『Cloud Layer V2』ノードは、これらの設定の影響を受けません。例えば、『Cloud Layer V3』を使用している場合、内部のGI計算が『Cloud Layer V2』やその他の環境とは異なり、GIキャッシュファイルに格納されない事に注意が必要です。GIキャッシュはV3には効果がありますが、一部の照明は環境光から来るため、主要なGI分散は現時点ではキャッシュする事が出来ません。そのため、ちらつきを減らしたい場合はこのタブの"Cloud GI quality"の値を増やす必要があります。 Cloud GI quality 雲のGIクオリティ 『Cloud Layer V3』、『Easy Cloud』の背景/間接照明コンポーネントの精度に影響します。背景/間接照明コンポーネントは、太陽などの直射光を除いて、シーンの他の部分から受け取った光です。それは、地形や他の雲層(同じ雲層の一部ではない空の他のもの)のようなものから受け取った光を含みます。同じ雲層内での散乱は散乱は、別々に処理されるため含まれません。雲のGIは、雲の陰影部分で一番目立ちます。雲のGIクオリティは、この光がどれだけ正確に計算されるかに影響します。低クオリティの設定では、アニメーションでちらつきが発生したり、雲の中でシミだらけのような外観の照明を作り出す傾向にありますが、レンダリングは高速になります。ポップアップメニューの静止画(Still)、シーケンス(Sequence)の各段階は、光サンプル数を2倍にする事でクオリティ増加だけでなく、レンダリング時間の増加も示しています。 Cloud GI max ray depth 雲のGI最大レイ深度 Terragen 4.1以上からの対応です。"Cloud GI quality"と同様に、この設定は、『Cloud Layer V3』、『Easy Cloud』の背景/間接照明コンポーネントの精度に影響します。それは、シーンの他の部分からの光を含む最大レイ深度を制限します。これは、光が異なる雲層の間で跳ね返る(レイトレースの反射計算の)回数を意味します。回数が多いほど正確な画像に仕上がりますが、レンダリング時間も必要とします。1つの雲層内で光が何回散乱するかは、別々に処理されるので制限されません。シーン内の異なるノードによって作成された雲層間の跳ね返りにのみ影響します。シーンに多数の雲層がある場合、雲層間の光の相互作用に起因する長いレンダリング時間を防ぐために、この数値を低く(例えば1、2)抑える事が特に重要です。『Renderer』ノードのこの機能は、レンダリング時間を極端に増加させずにより高いレイ深度を可能にする将来の改善要項としています。 Voxel scattering quality ボクセル散乱クオリティ Terragen 4.1以上。これは、『Cloud Layer V2』を除く『Cloud Layer V3』、『Easy Cloud』のすべての雲層に影響します。雲を介して何度も散乱される光は、ボクセルバッファを通して多くの異なる散乱軌道をサンプリングする モンテカルロ法 を用いて計算されます。いくつかの雲を含むすべてのピクセルのために、多くの散乱軌道を計算し、一緒に平均化する事が出来ます。レンダリングエンジンとシェーダは、各画像サンプル(カメラからの光線)で計算される散乱軌道の数を決定しますが、ボクセルの散乱クオリティでこの量を増減する事が出来ます。この設定は乗数の役割を果たすため、100の場合、レンダラーは50の倍の軌道数を計算します。ほとんどの場合、デフォルト値50を使用する事を推奨します。ノイズの多いシーンは通常、より高いアンチエイリアス(雲だけでなく画像全体が改善されます)を使って滑らかに出来るので、ボクセルの散乱クオリティを50に据え置く事が出来ます。ただし、この値を増減して変更する事によって、一部のシーンのレンダリングを最適化出来る可能性があります。
https://w.atwiki.jp/libutau/pages/24.html
Lib UTAU のアーカイブに同梱されているファイルについて ドキュメントLibUTAU_ReadMe.html / css LibUTAU_History_JPN.txt Lib UTAU ソースコードUUtauData.cpp / h UUtauSection.cpp / h UGenonSettings.cpp / h UOtoIni.cpp / h UUtauUtils.cpp / h UtauConstants.h / Haiku.h UWaveData.cpp / h サンプルプログラムSample.cpp / LibUTAUSample.exe plugin.txt LibUTAUSample.cbproj LibUTAUSample.vcxproj / sln Lib UTAU のアーカイブに同梱されているファイルについて Lib UTAU のアーカイブには、以下のファイルが同梱されています。 ドキュメント LibUTAU_ReadMe.html / css Lib UTAU に関する最低限のドキュメントです。 ReadMe に書ききれないことは、当ヘルプにて記載しています。 LibUTAU_History_JPN.txt Lib UTAU のバージョンアップ履歴を記載しています。 Lib UTAU ソースコード UUtauData.cpp / h Lib UTAU の中心となるクラス TUtauData のソースコードです。 UUtauSection.cpp / h セクションを管理する TUtauSection ならびに、その派生クラスのソースコードです。 UGenonSettings.cpp / h 原音設定 1 行分を保持する TGenonSettings のソースコードです。 UOtoIni.cpp / h oto.ini の解析を行う TOtoIni のソースコードです。 UUtauUtils.cpp / h Lib UTAU が使用するユーティリティー関数を集めたソースコードです。 UtauConstants.h / Haiku.h Lib UTAU で使用する様々な定数を定義しています。 UWaveData.cpp / h おまけで収録しています。WAVE ファイルを読み込むための TWaveData のソースコードです。 サンプルプログラム Sample.cpp / LibUTAUSample.exe Lib UTAU を利用するサンプルプログラムのソースコードと、ビルド済みバイナリです。 plugin.txt UTAU 本体に LibUTAUSample.exe をプラグインとして認識させるための設定ファイルです。 LibUTAUSample.cbproj サンプルプログラムを C++ Builder XE3 でビルドするためのプロジェクトファイルです。 LibUTAUSample.vcxproj / sln サンプルプログラムを Visual C++ 2013 Express でビルドするためのプロジェクトファイルです。
https://w.atwiki.jp/enderal/pages/16.html
『ひとつの問いから始めよう。 簡単に思えるかもしれないが、どうか考えてほしい。 自由な者と奴隷との違いとは、なにか。 これは自由になりたかった者の物語。』 Enderalとは Skyrimをベースにした超大型コンバージョンMOD。 導入すると、Skyrimとは異なる世界観・物語を冒険することができるようになる。 Skyrimのゲームエンジンを使った全く別のゲームと思った方がよい。 操作はSkyrimと近いところも多いものの、スキルシステムや戦闘バランスなども別物。 無料、日本語対応済み。導入も簡単(→導入の仕方)。開発元はドイツのSureAI。 シリーズについて 「Enderal Forgotten Stories」は「ヴィン」という世界を舞台に作られたシリーズの4作目。 ヴィンの大陸図は公式wikiにて公開されているのでこちらを参照。 1作目「Myar Aranath Relict of Kallidar」と2作目の「Arktwend The Forgotten Realm」はMorrowindのコンバージョンMOD。 3作目の「Nehrim At Fate's Edge」はOblivionのコンバージョンMODである。 いずれもヴィンにいくつかある大陸がそれぞれ舞台となっている。 あらすじ 舞台はヴィンにある大陸の1つ、エンデラル。 毎晩悪夢にうなされている主人公は、エンデラル大陸へ渡るべく船に密航していた。 が、ある日船員に見つかって戦闘になった挙句、海に放り出されてしまう。 運よくエンデラル大陸に流れついた主人公だったが、 そこで大陸に蔓延するとある“病”のことを知る……。 この世界では3年前に、とある大事件が起きていた。 4000年間世界を統治してきた不死の魔術師「ライトボーン」の死。 ライトボーンは厳格に世界を支配し、神として民衆にたたえられてきたが、 ナラストゥール・アランセアルの率いる抵抗軍に敗れたのだ。 人類は自由を取り戻した。しかし、世界は荒廃し無秩序になっていた。
https://w.atwiki.jp/libutau/pages/19.html
サンプルプログラムの解説 まずは TUtauData [#SETTING] セクションの管理 音符セクションの管理 パイプファイルのバージョン間の相違を吸収 値の設定 パイプファイルへの書き戻し 追記予定 サンプルプログラムの解説 Lib UTAU に同梱してあるサンプルプログラムについて、その内容を解説します。 なお、ここで引用しているのはダイジェスト版であり、一部のプログラムコードが省略されています。 まずは TUtauData int main(int oArgC, char* oArgV[]){ // パイプファイルの内容全体を管理するクラス TUtauData aUtauData; // パイプファイルの内容を読み込む if ( aUtauData.SetTo(oArgV[1]) != B_OK ) { echo("パイプファイルを読み込めません。"); return -1; } Lib UTAU の中心となるクラスは TUtauData であり、UTAU 本体から受け取るパイプファイルの内容をすべて管理するクラスです。 Lib UTAU を利用する場合、まずは TUtauData のインスタンスを生成するところから始めます(4 行目)。 続いて、SetTo() 関数でパイプファイルの内容をすべて読み込みます(7 行目)。UTAU 本体からプラグインへ、パイプファイル名がコマンドライン引数として渡されますので、そのファイル名を SetTo() 関数に渡します。 Lib UTAU 全体を通じて言えることですが、文字列は全て、マルチバイト文字(char)です。ワイド文字(wchar_t)ではありません。ファイル名もマルチバイト文字で渡して下さい。 SetTo() 関数は正常にパイプファイルを読み込めると、定数 B_OK を返してくるので、B_OK 以外が返ってきた場合はエラーとしてプログラムを終了します。 [#SETTING] セクションの管理 // [#SETTING] セクションの内容を管理するクラス const TUtauSectionSettings* aSettings; aSettings = aUtauData.SectionSettings(); // [#SETTING] セクションからテンポ(double 型)を取得してみる double aTempo; if ( aSettings- GetValue(KEY_NAME_TEMPO, aTempo) == B_OK ) { echo("テンポを取得できました:"+num_to_string(aTempo)); } else { echo("テンポが設定されていません。"); } 最初に、パイプファイルの [#SETTING] セクションの情報を取得してみましょう。 [#SETTING] セクションを管理するクラスは TUtauSectionSettings です。TUtauData SectionSettings() 関数で、TUtauSectionSettings へのポインタを取得できます(3 行目)。 [#SETTING] セクションはリードオンリーなので、TUtauSectionSettings のポインタ変数を宣言する際は const 付きにしておいて下さい。 [#SETTING] セクションに記録されている情報を取得するには、GetValue() 関数を使います(7 行目)。 GetValue() の第 1 引数は、取得したい情報の名称です。テンポを取得する時は KEY_NAME_TEMPO を渡します。KEY_NAME_TEMPO は Lib UTAU で定義されている定数で、実体は "Tempo" です。パイプファイルの中身は「Tempo=120.00」などとなっていますが、ここの名称をそのまま渡せば情報を取得できるということです。 GetValue() の第 2 引数は、取得した値の格納場所です。テンポは小数なので、double 型変数へのポインタを渡すことで、この変数にテンポが格納されます。 8 行目では、取得したテンポを表示しています。echo() 関数は Lib UTAU の関数ではなく、サンプルプログラムで定義している関数です。通常なら cout で良いのですが、ライブラリ作者の環境ですと、cout だと UTAU から起動された場合に値が表示されなかったので、echo() 関数内でメッセージボックスを表示しています。 num_to_string() 関数は Lib UTAU のサポート関数で、数値を文字列(string 型)に変換します。boost が使える環境でしたら、lexical_cast string 使えばいいだけなのですけどね。 音符セクションの管理 // 音符セクション([#0001] など)の内容を管理するクラス TUtauSectionNote* aNote; // UTAU で選択されている音符の歌詞(string 型)をすべて取得してみる string aLyric; string aAllLyric; for ( int32 i = aUtauData.SectionNotesNormalBegin() ; i aUtauData.SectionNotesNormalEnd() ; i++ ) { aNote = aUtauData.SectionNoteAt(i); if ( aNote- GetValue(KEY_NAME_LYRIC, aLyric) == B_OK ) { aAllLyric += aLyric; } else { echo("インデックス "+num_to_string(i)+" の歌詞が設定されていません。"); } } echo("歌詞:"+aAllLyric); それでは、パイプファイルの音符セクション([#0001] など)の情報を取得してみましょう。UTAU 本体で選択されているすべての音符の歌詞を繋げてみます。 音符セクションを管理するクラスは TUtauSectionNote です。パイプファイルにはたくさんの音符セクションが並んでいますが、TUtauData SectionNoteAt() 関数で、TUtauSectionNote へのポインタを取得できます(8 行目)。引数は、何番目の音符セクションかを示すインデックスで、0 から始まります。つまり、SectionNoteAt(0) で最初の音符セクションを取得できます。 したがって、SectionNoteAt(0)、SectionNoteAt(1)……SectionNoteAt(セクションの数-1) というように順に音符セクションを取得していけば、すべての音符セクションにアクセスできます。 ここで注意が必要なのは、[#PREV] セクションの存在です。ご承知の通り、[#PREV] は選択されている音符の前の音符を示します。 SectionNoteAt(0) が返す値は [#PREV] の可能性があります。[#PREV] セクションが不要な場合は、SectionNotesNormalBegin() 関数の出番です(7 行目)。この関数は、[#PREV] セクションを除いた最初のセクションのインデックスを返します。したがって、SectionNoteAt(SectionNotesNormalBegin()) で、[#PREV] セクションを除いた最初の音符セクションを取得することができます。 同様のことが末尾の [#NEXT] セクションについても言えます。そして、SectionNotesNormalEnd() 関数が、[#NEXT] セクションを除いたインデックスの最大値です。 SectionNotesNormalEnd() は STL の end() と同様に有効値の次の値を返すことに注意して下さい。つまり、SectionNoteAt(SectionNotesNormalEnd()) は不正です。SectionNoteAt(SectionNotesNormalEnd()-1) が末尾の音符セクションです。 さて、無事に先頭と末尾のインデックスが分かったので、7~14 行目のループに入ります。 ループの中で各音符の歌詞を取得していますが、歌詞の取得は GetValue() 関数です。 [#SETTING] セクションでテンポを取得した時も GetValue() 関数を使いました。関数名が同じなのは偶然でも何でもなく、実は、TUtauSectionSettings も TUtauSectionNote も、同じ TUtauSection クラスから派生しています。GetValue() 関数は TUtauSection クラスの関数なのです。 したがって、テンポの取得も歌詞の取得もやり方は変わりませんので、解説は省略します。テンポの時と違うのは、歌詞は文字列なので、第 2 引数に string 型へのポインタを渡しています。 パイプファイルのバージョン間の相違を吸収 // パイプファイルのバージョンを管理するクラス const TUtauSectionVersion* aVersion; aVersion = aUtauData.SectionVersion(); // 最初の音符のモジュレーション(int32 型)を取得してみる // UTAU 0.2.90(キー名は "Modulation")でも UTAU 0.2.75(キー名は "Moduration")でも取得できるようにする int32 aMod; aNote = aUtauData.SectionNoteAt(aUtauData.SectionNotesNormalBegin()); if ( aNote- GetValue(aVersion- CompatibilityKey(KEY_NAME_MODULATION), aMod) == B_OK ) { echo("モジュレーションを取得できました:"+num_to_string(aMod)); } else { echo("モジュレーションが設定されていません。"); } 次に、[#VERSION] セクションの管理について解説します。 [#VERSION] セクションを管理するクラスは TUtauSectionVersion です。TUtauData SectionVersion() 関数で、TUtauSectionVersion へのポインタを取得できます(3 行目)。 [#VERSION] セクションはリードオンリーなので(UTAU の仕様上リードオンリーなのかは不明ですが、Lib UTAU ではリードオンリーとして扱っています)、TUtauSectionVersion のポインタ変数を宣言する際は const 付きにしておいて下さい。 さて、UTAU のバージョン(パイプファイルのバージョン)によって、パイプファイルの記述が少しずつ変わってきます。差異を考慮してプログラムを組むのは大変ですが、TUtauSectionVersion は、差異吸収作業を手助けする機能を持っています。 それが CompatibilityKey() 関数です。CompatibilityKey() は、最新の UTAU でのキー名を渡すと、現在読み込んでいるパイプファイルのバージョンに合わせたキー名を返してくれます。 例えば、モジュレーションは、UTAU 0.2.90 では "Modulation" ですが、UTAU 0.2.75 では "Moduration" です(l と r の違い)。 CompatibilityKey() に最新の "Modulation" を表す KEY_NAME_MODULATION を渡し、CompatibilityKey(KEY_NAME_MODULATION) とすると、UTAU 0.2.90 のパイプファイルを読み込んでいる場合は KEY_NAME_MODULATION が返り、UTAU 0.2.75 のパイプファイルを読み込んでいる場合は KEY_NAME_MODURATION が返ります。 つまり、音符セクションからモジュレーションを取得する際、GetValue(aVersion- CompatibilityKey(KEY_NAME_MODULATION), aMod) とすることで、UTAU 0.2.90 だろうと UTAU 0.2.75 だろうと気にせず、モジュレーションの値を取得することができます(9 行目)。 なお、モジュレーションは整数なので、GetValue() の第 2 引数には int32 型へのポインタを渡しています。int32 は要するに long です。short や long だと型の大きさが直感的に分かりづらいので、Lib UTAU では int8、int16、int32 というような表記を用いています。 実のところ、現在、CompatibilityKey() は KEY_NAME_MODULATION を変換する機能しかありません。なんとなく、他にもバージョン間で差異のあるプロパティはある気がしていますが、いまいち把握できていないので、実装できていません。コメント投稿ページで差異を具体的に教えていただければ(UTAU のバージョンとプロパティ名など)、対応を検討させていただきます(必ずしも対応できるとは限りません)。 値の設定 // UTAU で選択されている音符の音の強さ(int32 型)をすべて半分にする int32 aIntensity; for ( int32 i = aUtauData.SectionNotesNormalBegin() ; i aUtauData.SectionNotesNormalEnd() ; i++ ) { aNote = aUtauData.SectionNoteAt(i); if ( aNote- GetValue(KEY_NAME_INTENSITY, aIntensity) == B_OK ) { if ( aNote- SetValue(KEY_NAME_INTENSITY, aIntensity/2) != B_OK ) { echo("インデックス "+num_to_string(i)+" の音の強さを設定できませんでした。"); } } else { echo("インデックス "+num_to_string(i)+" の音の強さが設定されていません。"); } } echo("音の強さを半分にしました。"); これまで値の取得について見てきましたが、今度は、値の設定について解説します。UTAU で選択されている音符の音の強さを、すべて現在の半分に設定してみます。 3~12 行目のループの回し方は、全ての音符の歌詞を取得した時と同じやり方です。 5 行目で、音符の音の強さ(KEY_NAME_INTENSITY)を取得し、int32 型の変数 aIntensity に格納しています。 6 行目が音の強さを設定している箇所です。値の設定には SetValue() 関数を使います。GetValue() 関数と使い方はほとんど同じで、第 1 引数がキー名です。音の強さを設定したいので KEY_NAME_INTENSITY を渡しています。第 2 引数が設定したい値で、現在の半分にしたいので、先ほど取得した aIntensity を 2 で割って渡しています。GetValue() と異なり、SetValue() では第 2 引数は値渡しです。 パイプファイルへの書き戻し // 変更内容をパイプファイルに書き戻す if ( aUtauData.Export(oArgV[1]) == B_OK ) { echo("パイプファイルに変更内容を保存しました。"); } else { echo("パイプファイルに変更内容を保存できませんでした。"); } 設定した値を UTAU 本体に返すには、パイプファイルを更新します。 パイプファイルに変更点を書き出す関数は、TUtauData Export() です(2 行目)。Export() 関数は、TUtauData の全てを書き出すのでは無く、SetValue() で更新されたプロパティのみ書き出します。 以上で、サンプルプログラムの解説を終わります。 追記予定 先行発声やオーバーラップも考慮し、さらに食い込み補正も計算に入れた実質の音符の長さを算出する TUtauSectionNote GetCorrectedDuration() 食い込み補正を計算に入れた値を取得する TUtauSectionNote GetCorrectedPreUtterance()、GetCorrectedVoiceOverlap() 「10,10,10,20,30,50,60,%,10,10,40」というエンベロープの表記を「(10, 20) (20, 30) (30, 40) (475, 50) (485, 60)」というように分かりやすく解釈する TUtauSectionNote GetCorrectedEnvelope() PBS、PBW、PBY に散らばっているピッチベンドをまとめる TUtauSectionNote GetCorrectedPitch()
https://w.atwiki.jp/wicky/pages/65.html
render …表示したいビューを指定する(特定のケースで別の画面を使いたい場合などに利用できる)
https://w.atwiki.jp/libutau/pages/16.html
目次 命名規則クラス名 関数名 定数 目次 TUtauData Lib UTAU の中心となるクラス。パイプファイルの内容全体を管理する。 1 つの TUtauSectionVersion クラスインスタンスを保持する。 1 つの TUtauSectionSettings クラスインスタンスを保持する。 複数個の TUtauSectionNote クラスインスタンスを保持する。 TUtauSectionVersion [#VERSION] セクションの内容を管理するクラス。 パイプファイルのバージョン間差異を吸収するための機能も持つ。 TUtauSection から派生している。 TUtauSectionSettings [#SETTING] セクションの内容を管理するクラス。 原音設定を統括している。 TUtauSection から派生している。 1 つの TOtoIni クラスインスタンスを保持する。 TUtauSectionNote 音符セクション([#0001] など)の内容を管理するクラス。 TUtauSection から派生している。 TUtauSection セクション管理の基礎的な機能を提供する基底クラス。 TOtoIni oto.ini に記載されている原音設定全体のデータを保持するクラス。 複数個の TGenonSettings クラスインスタンスを保持する。 TGenonSettings oto.ini に記載されている原音設定 1 行分のデータを保持するクラス。 TPointD 二次元座標(X, Y)を浮動小数点で保持するクラス。 TWaveData WAVE ファイルの内容を管理するクラス。 関数 Lib UTAU で使用しているユーティリティー関数。 定数 Lib UTAU で定義している定数。 命名規則 クラス名 クラス名は大文字の T から始まります。単語の先頭は大文字、それ以外は小文字です。 例:TUtauData 関数名 クラスメンバ関数 大文字で始まり、単語の先頭は大文字、それ以外は小文字です。 例:TUtauData AddSectionNote() 必ず成功する単純な Getter(変数の取得関数)は、取得したい変数の名前が関数名になります。返値で取得したい変数の値(または変数へのポインタ)を返します。 例:TUtauSection Parent() 失敗する可能性がある Getter は、GetXXX(XXX は取得したい変数の名前)という関数名になります。返値は status_t 型で、引数に取得したい変数の値(または変数へのポインタ)を格納します。 例:TUtauSection GetValue() Settter(変数の設定関数)は、SetXXX(XXX は設定したい変数の名前)という関数名になります。返値は status_t 型で、引数で設定したい変数の値を渡します。 例:TUtauSection SetValue() グローバル関数 すべて小文字、単語と単語の間はアンダースコアで連結します。 例:string_to_vector_string() 定数 定数はすべて大文字で、単語と単語の間はアンダースコアで連結します。 例:KEY_NAME_TEMPO
https://w.atwiki.jp/terragen/pages/255.html
概要 Render State(レンダリング状態)は、レンダリング中にシェーダがアクセスして変更する変数や関数の集まりです。これはシェーダと画像のレンダリングとの間の主要なコミュニケーションポイントです。シェーダが何かを要求された時、例えば位置を移動させたり、ピクセルの色をレンダラーに伝えたりする時、シェーダはRender Stateからシェーディングするポイントに関する情報を取得します。一方、シェーダは、Render Stateの値を変更する事により、情報をレンダラーに送り返します。これにより、レンダラーは、描画するカラーやサーフェスの形状を知る事が出来ます。これは通常、ポイントごとに行われます。大まかに言えば、レンダラーは1ピクセルまたは1マイクロポリゴンを一度に処理し、すべてのシェーダにそのポイントの修正を依頼します。 シェーダの中には、後から呼び出される他のシェーダの動作を変更できるように状態を修正するものがあります。例えば、『Warp Shader』は、その"Shader"の入力端子に接続された他のシェーダの形状を変更する事が出来ますが、これはそのためです。 シェーダはこれらの事を、ユーザーに詳細を明かす事なく実行します。ただし、Render Stateの変数の多くは、『Get』ファンクションノードを使ってアクセス出来るので、ビルトインシェーダだけでは出来ない事が可能になります。 『Get』Functions 以下のノードは、Render Stateの変数のいくつかに読み取り専用でアクセスする事が出来ます。これらのノードが返す値は、レンダリングコンテキストに依存し、また、これらの関数が呼び出される前にどのシェーダが呼び出されたかに依存する場合があります。 Scalars Get Altitude - 『Geometry to Position』から『Normal in Geometry』方向に沿った位置までの符号付き距離。惑星の場合、これは基本的に変位を含む現在レンダリングされている位置の高度を意味します。 Get Altitude in Texture - 『Normal in Geometry』に沿って、『Geometry to Position』からテクスチャの位置までの符号付き距離。惑星の場合、これは基本的に現在のテクスチャ座標の高度を意味します。 Get Frame Number - 現在のRender Stateの現在のフレーム番号を提供します。 Positions (vectors) Get Camera Position - 現在のシェーディング状況とは無関係に、ワールド空間でのメインカメラの位置。 Get Position - ディスプレースメントを含む、ワールド空間におけるポイントの位置。 Get Position in Geometry - ディスプレースメント前のワールド空間におけるポイントの位置。 Get Position in Texture - テクスチャ座標はオブジェクトによって設定され、多くの場合、他のシェーダによって変更されます。例えば、『Compute Terrain』、『Tex Coords From XYZ』、『Transform Shader』、『Warp Shader』 Get Ray Origin - ワールド空間におけるビューアの位置または現在のレイの原点。 Normals (vectors) Get Normal - シェーダやレンダラーによる最新の修正を含むサーフェス法線 Get Normal in Geometry - ディスプレースメント前のサーフェス法線。 Get Normal in Texture - オブジェクトや『Compute Terrain』、『Compute Normal』で設定されたサーフェス法線。 Colours 以下のカラー変数の一部またはすべては、有用な情報が設定されている可能性がありますが、それらを実行する前にどのシェーダが呼び出されたかによって異なります。 Get Diffuse Colour - ライティング前のサーフェスの拡散係数。 Get Emitted Colour - サーフェスの放射(発光)成分。 Get Final Alpha - サーフェスの最終出力アルファ。 Get Final Colour - サーフェスの最終出力カラー。 Get Final Opacity - サーフェスの最終透明度(1で透明)。 Get Specular Colour - サーフェスの鏡面成分。
https://w.atwiki.jp/opengl/pages/329.html
FluidSynth https //www.fluidsynth.org/ こちらに FluidSynth という、サウンドフォント シンセサイザーがあるので使わせて頂こうと思います。 2023年9月18日現在、最新版の FluidSynth 2.3.2 をダウンロードします。 Recent News の Released FluidSynth 2.3.2 をクリックしてページを移り、 https //github.com/FluidSynth/fluidsynth/releases/tag/v2.3.2 となっている所を クリックします。 64bitは fluidsynth-2.3.2-win10-x64.zip 32bitは fluidsynth-2.3.2-winXP-x86.zip を、ダウンロードして解凍し、Cドライブ C \ に移動させます。 FluidSynth https //www.fluidsynth.org/ のページに戻り、Documentation をクリックします。 Building FluidSynth with CMake をクリックします。 Building with MinGW on Windows をクリックします。 その下の Building with Visual Studio on Windows ではありません。 MinGW です。 64bitの場合は glib-2.26 glib-dev-2.26 pkg-config-0.23 proxy-libintl gettext-runtime-0.18 を全部ダウンロードして解凍して下さい。 32bitの場合は glib-2.28 glib-dev-2.28 pkg-config-0.26 proxy-libintl gettext-runtime-0.18 を全部ダウンロードして解凍して下さい。 Cドライブにfreeswというフォルダを作り、更にその中にbinフォルダを作ります。 そして、freeswフォルダに先ほど解凍したglibとかを全部移動させます。 64bitの場合は64bitのセット、32bitの場合は32bitのセットを使います。 そこまで出来たら、パスを通します。 Windowsボタンを右クリックして、システムを選択。 システムの詳細設定をクリックします。 環境変数ボタンを押します。 システム環境変数のPathをクリックして編集ボタンを押します。 新規ボタンを押して、 c \freesw\bin を入力してOKボタンを押します。 これでパスが通りました。 ////////////////////////////////////////////////////////////////////////////////// GitHub のソースコードから FluidSynth の .lib を作る場合(ダウンロードした場合は要りません) *ダウンロードしたZIPではできませんでした。。。 *GitHub のソースコードから FluidSynth の .lib を作るのが良いようです。。。 FluidSynth - GitHub https //github.com/FluidSynth こちらで FluidSynth のリポジトリをクローンします。 fluidsynth のリンクを右クリックしてリンクのアドレスをコピーします。 Visual Studio 2022 を起動して起動ウィザードのリポジトリのクローン(C)を押します。 リポジトリの場所の所に先ほどのリンクアドレスをペーストします。 そしてクローンボタンを押します。 するとFluidSynthのGit リポジトリをパスの場所にクローンしてくれます。 なにやらユーザー名とメールアドレスの入力を求められますが無視して下さい。 メニューの表示、ソリューションエクスプローラーを選択します。 ソリューションエクスプローラーのフォルダービューをダブルクリック、fluidsynth を選択しメニューのビルド、すべてビルドを選択します。 これで FluidSynth の CMAKE 用の構造ができました。 ////////////////////////////////////////////////////////////////////////////////// CMAKE https //cmake.org/ 上記のサイトのダウンロードからCMAKE GUIをダウンロードします。 こちらも64bitのx64 インストーラーかZIP、32bitのi386 インストーラーかZIPがあります。 使う方をインストールして起動します。 *CMAKE のバージョン 3.27.4 はバグが有り、正常なファイルが生成されません。 *CMAKE の安定板 3.27.5 を使って下さい。 *インストーラー版よりZIP版を解凍した方が良いようです。 CMAKE を起動したら、Browse Source でダウンロードした fluidsynth のフォルダか、先ほど Visual Studio 2022 で 作った fluidsynth のフォルダを指定します。 Browse Build で CMAKE の出力先を指定します。 Configure ボタンを押して Configuring done となったら設定完了。 Generate ボタンで Generating done となったら念願の FluidSynth の .lib が出来上がりです。 2023/9/19追記 まだできてませんでした。。。 ここまでの事をやって Visual Studio 2022 用のソリューションファイル、 FluidSynth.sln が出来上がっているので CMAKEの出力先の FluidSynth.sln を開きます。 そして、構成設定をDebugのまま、メニューのビルド、ソリューションのビルドを選択します。 すると fluid(CMAKE出力先)\src\Debug にデバッグ版の fluidsynth.lib その他が出来上がっています。 続け様に構成設定を Release にします。 そして、メニューのビルド、ソリューションのビルドを選択します。 すると fluid(CMAKE出力先)\src\Release にリリース版の fluidsynth.lib その他が出来上がっています。 これでやっと念願の FluidSynth の .lib が出来上がりです。 良いですね。(・∀・) 意外にもCMAKEの使い方がわからなくて詰んでる初心者の方が結構居るのではないかと思います。
https://w.atwiki.jp/toho/pages/5492.html
Wondering Meme LP サークル:Golden Pe Done Number Track Name Arranger Original Works Original Tune Length 01 Sketch for Maple Lom(n) 東方夢時空 Maple Dream [04 53] 02 Summer of Hu-jin Lom(n) 東方文花帖 風神少女 [03 33] 03 Kazaana Lom(n) 東方地霊殿 暗闇の風穴 [03 23] 04 Watarumono Lom(n) 東方地霊殿 渡る者の途絶えた橋 [04 28] 05 Plastic Mind Lom(n) 東方怪綺談 プラスチックマインド [03 44] 06 Kensyo Lom(n) 東方星蓮船 小さな小さな賢将 [02 34] 07 Mant-tronica Lom(n) 東方地霊殿 業火マントル [05 36] 08 jearous eyes on... Lom(n) 東方地霊殿 緑眼のジェラシー [02 19] 09 Sky Dream Lom(n) 東方星蓮船 空の帰り道 ~ Sky Dream [02 40] 10 Be of good cheer(LP ver.) Lom(n) 東方地霊殿 死体旅行 ~ Be of good cheer! [04 14] 11 Moonin'Moon(LP ver.) Lom(n) 東方萃夢想 砕月 [02 12] 詳細 コミックマーケット78(2010/08/14)にて初頒布の同人誌「総狂 ~ごるぺど総集編~」に同梱 イベント価格:?円 ショップ価格:1890円(税込) レビュー 名前 コメント